A storage system is a computer that provides storage service relating to the organization of information on writeable persistent storage devices, such as memories, tapes or disks. The storage system is commonly deployed within a storage environment, such as a storage area network (SAN) or a network attached storage (NAS) environment. As used herein, the term storage environment should be taken to include a SAN and/or NAS environment including storage systems, clients and/or other internetworking components, such as network switches, that are utilized by the clients and/or storage systems.
When used within a NAS environment, the storage system may be embodied as a file server including a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on, e.g. the disks. Each “on-disk” file may be implemented as a set of data structures, e.g., disk blocks, configured to store information, such as the actual data for the file. A directory, on the other hand, may be implemented as a specially formatted file in which information about other files and directories are stored.
The file server, or filer, may be further configured to operate according to a client/server model of information delivery to thereby allow many client systems (clients) to access shared resources, such as files, stored on the filer. Sharing of files is a hallmark of a NAS system, which is enabled because of semantic level access to files and file systems. Storage of information on a NAS system is typically deployed over a computer network comprising a geographically distributed collection of interconnected communication links, such as Ethernet, that allow clients to remotely access the information (files) stored on the file server. The clients typically communicate with the filer by exchanging discrete frames or packets of data according to pre-defined protocols, such as the well-known Transmission Control Protocol/Internet Protocol (TCP/IP).
In the client/server model, the client may comprise an application executing on a computer that “connects” to the filer over a computer network, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the well-known Internet. NAS systems generally utilize file-based access protocols; therefore, each client may request the services of the filer by issuing file system protocol messages (in the form of packets) to the file system over the network. By supporting a plurality of file system protocols, such as the conventional Common Internet File System (CIFS), the Network File System (NFS) and the Direct Access File System (DAFS) protocols, the utility of the filer may be enhanced for networking clients.
Conversely, a SAN is a high-speed network that enables establishment of direct connections between a storage system and its storage devices. The SAN may thus be viewed as an extension to a storage bus and, as such, a storage operating system of the storage system enables access to stored information using block-based access protocols over the “extended bus.” In this context, the extended bus is typically embodied as Fibre Channel (FC) or Ethernet media adapted to operate with block access protocols, such as Small Computer Systems Interface (SCSI) protocol encapsulation over FC (FCP) or TCP/IP/Ethernet (iSCSI). A SAN arrangement or deployment allows decoupling of storage from the storage system, such as an application server, and some level of storage sharing at the application server level. There are, however, environments wherein a SAN is dedicated to a single server.
It is advantageous for the services and data provided by a storage system to be available for access to the greatest degree possible. Accordingly, some computer storage systems provide a plurality of storage systems in a cluster, with a property that when a first storage system fails, the second storage system is available to take over and provide the services and the data otherwise provided by the first storage system. When a first storage system fails, the second storage system in the cluster assumes the task of processing and handling any data access requests normally processed by the first storage system. One such example of a cluster configuration is described in U.S. patent application Ser. No. 09/625,234 entitled NEGOTIATING TAKEOVER IN HIGH AVAILABILITY CLUSTER by Samuel M. Cramer, et al.
In typical storage environment configurations, an administrator may have to configure multiple storage systems, switches, disk drive loops and/or clients to ensure proper storage environment connectivity. Changes to the configuration may have cascading effects throughout the storage environment, especially with redundant data paths. Typically, minor misconfigurations may cause logical unit numbers (lun) to not be exported by a storage appliance or be inaccessible to certain clients. In extreme cases, luns may be accessible via a primary data path, but in the event of a failover not be accessible via redundant data path. Such a misconfiguration may have serious performance and data integrity consequences if it is not discovered until after a failover situation occurs. Administrators typically perform site checks of basic cabling of SAN systems to ensure proper data connectivity; however, administrators may overlook certain incompatibilities with devices or components of a SAN storage system.
The possibility of misconfiguring a storage environment increases when new hardware and/or network topologies are added, e.g. implementing a storage system cluster for increased data availability. Alternatively, when a component, e.g. a storage system, is upgraded to include additional features, an administrator may accidentally create a configuration that is inappropriate or that has unexpected consequences. These misconfigurations may not be obvious until the SAN enters alternate configurations, such as a failover mode, because a loss of connectivity and/or data paths.